/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pck_com.pck_rrhh.pck_src.pck_services.pck_impl;

import com.ibatis.sqlmap.client.SqlMapException;
import com.tramitedocu.pojos.Cls_Profesion;
import java.util.ArrayList;
import java.util.Map;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import pck_com.pck_rrhh.pck_src.pck_pojos.Cls_Encargatura_Permiso;
import pck_com.pck_rrhh.pck_src.pck_pojos.Cls_TipoPermiso;
import pck_com.pck_rrhh.pck_src.pck_services.TablasService;
import pck_com.pck_rrhh.pck_utiles.Cls_Funciones;
import pck_com.pck_rrhh.pck_utiles.Cls_Parametros;

/**
 *
 * @author Christian
 */
public class TablasServiceImpl extends SqlMapClientDaoSupport implements TablasService {

    public ArrayList<Cls_Profesion> obtenerTodasProfesiones(Map<String, String> parametros) {
        try {
            return (ArrayList<Cls_Profesion>) this.getSqlMapClientTemplate().
                    queryForList(Cls_Parametros.FuncionIbt_Rrhh_LISTAR_PROFESIONES, parametros,
                    (Integer.parseInt(parametros.get(Cls_Parametros.Map_PAGE)) - 1)
                    * Integer.parseInt(parametros.get(Cls_Parametros.Map_PAGE_TAMANIO)),
                    Integer.parseInt(parametros.get(Cls_Parametros.Map_PAGE_TAMANIO)));
        } catch (DataAccessException ex) {
            ex.printStackTrace();
            return null;
        } catch (SqlMapException _ex) {
            _ex.printStackTrace();
            return null;
        }
    }

    public String nuevaProfesion(Map<String, String> parametros) {
        String retorno = "";
        String parametrosParaService_01[] = {Cls_Parametros.Map_CODIGO_PROFESION, obtenerCantidadProfesiones()};
        parametros = Cls_Funciones.generarHashMapParaRequest(parametros, Cls_Funciones.generarHashMapParaSolicitud(parametrosParaService_01));
        try {
            this.getSqlMapClientTemplate().insert(Cls_Parametros.FuncionIbt_Rrhh_NUEVA_PROFESION, parametros);
            retorno = "SE REGISTRO CORRECTAMENTE";
        } catch (NullPointerException _ex) {
            retorno = "ERROR AL INSERTAR";
            _ex.printStackTrace();
        }
        return retorno;
    }

    public String obtenerCantidadProfesiones() {
        try {
            String codigo = "" + this.getSqlMapClientTemplate().queryForObject(Cls_Parametros.FuncionIbt_Rrhh_OBTENER_CANTIDAD_PROFESIONES);
            for (int i = codigo.length(); i < 3; i++) {
                codigo = "0" + codigo;
            }
            return codigo;
        } catch (DataAccessException e) {
            e.printStackTrace();
            return null;
        } catch (SqlMapException _ex) {
            _ex.printStackTrace();
            return null;
        }
    }

    public String modificarProfesion(Map<String, String> parametos) {
        String retorno = "";
        try {
            this.getSqlMapClientTemplate().update(Cls_Parametros.FuncionIbt_Rrhh_MODIFICAR_PROFESION, parametos);
            retorno = "SE MODIFICO CORRECTAMENTE";
        } catch (NullPointerException ex) {
            retorno = "ERROR AL MODIFICAR";
            ex.printStackTrace();
        }
        return retorno;
    }

    public Cls_Profesion obtenerProfesion(Map<String, String> parametros) {
        try {
            return (Cls_Profesion) this.getSqlMapClientTemplate().queryForObject(Cls_Parametros.FuncionIbt_Rrhh_OBTENER_PROFESION, parametros);
        } catch (DataAccessException e) {
            e.printStackTrace();
            return null;
        } catch (SqlMapException _ex) {
            _ex.printStackTrace();
            return null;
        }
    }

    public String asignarProfesionTrabajador(Map<String, String> parametros) {
        String retorno = "";
        try {

            this.getSqlMapClientTemplate().update(Cls_Parametros.FuncionIbt_Rrhh_ASIGNAR_PROFESION_TRABAJADOR, parametros);
            retorno = "OPERACION EXITOSA";
        } catch (NullPointerException ex) {
            ex.printStackTrace();
            retorno = "ERROR AL ASIGNAR PROFESION";
        }
        return retorno;
    }

    public String darVacacionesTrabajador(Map<String, String> parametros) {
        String retorno = "";
        try {
            this.getSqlMapClientTemplate().update(Cls_Parametros.FuncionIbt_Rrhh_DAR_VACACIONES_TRABAJADOR, parametros);
            retorno = "OPERACION EXITOSA";
        } catch (NullPointerException ex) {
            ex.printStackTrace();
            retorno = "ERROR AL DAR VACACIONES A TRABAJADOR";
        }
        return retorno;
    }

    public String quitarVacacionesTrabajador(Map<String, String> parametros) {
        String retorno = "";
        try {
            this.getSqlMapClientTemplate().update(Cls_Parametros.FuncionIbt_Rrhh_QUITAR_VACACIONES_TRABAJADOR, parametros);
            retorno = "OPERACION EXITOSA";
        } catch (NullPointerException ex) {
            ex.printStackTrace();
            retorno = "ERROR AL QUITAR VACACIONES A TRABAJADOR";
        }
        return retorno;
    }

    public String actualizarUnidadOrganizativa(Map<String, String> parametros) {
        String retorno = "";
        try {
            this.getSqlMapClientTemplate().update(Cls_Parametros.FuncionIbt_Rrhh_ACTUALIZAR_UNIDAD_ORGANIZATIVA, parametros);
            retorno = "OPERACION EXITOSA";
        } catch (NullPointerException ex) {
            ex.printStackTrace();
            retorno = "ERROR AL ACTUALIZAR UNIDAD ORGANIZATIVA";
        }
        return retorno;
    }

    public String asignarEncargado(Map<String, String> parametros) {
        String retorno = "";
        try {
            this.getSqlMapClientTemplate().update(Cls_Parametros.FuncionIbt_Rrhh_ASIGNAR_ENCARGADO, parametros);
            retorno = "OPERACION EXITOSA";
        } catch (NullPointerException ex) {
            ex.printStackTrace();
            retorno = "ERROR AL ASIGNAR ENCARGADO";
        }
        return retorno;
    }

    public ArrayList<Cls_TipoPermiso> obtenerTodosTipoPermiso(Map<String, String> parametros) {
        try {
            return (ArrayList<Cls_TipoPermiso>) this.getSqlMapClientTemplate().
                    queryForList(Cls_Parametros.funcionIbt_Rrhh_LISTAR_PERMISOS,parametros);
        } catch (DataAccessException ex) {
            ex.printStackTrace();
            return null;
        } catch (SqlMapException _ex) {
            _ex.printStackTrace();
            return null;
        }
    }

    public String asignarEncardadoHistorial(Map<String, String> parametros) {
        String parametrosParaService_01[]={Cls_Parametros.Map_DNI,parametros.get(Cls_Parametros.Map_DNI_RESPONSABLE)};
        String retorno="";
         try {
          this.getSqlMapClientTemplate().insert(Cls_Parametros.funcionIbt_Rrhh_ASIGNAR_ENCARGADO_HISTORIAL,parametros);
          darVacacionesTrabajador(Cls_Funciones.generarHashMapParaSolicitud(parametrosParaService_01));
          retorno="SE ASIGNO ENCARGADO CORRECTAMENTE";
         } catch (DataAccessException ex) {
            ex.printStackTrace();
            retorno ="ERROR AL ASIGNAR ENCARGADO";
        }
        return retorno;
    }

    public String modificarPermiso(Map<String, String> parametros) {
        String retorno="";
         try {
          this.getSqlMapClientTemplate().update(Cls_Parametros.funcionIbt_Rrhh_MODIFICAR_PERMISO,parametros);
           retorno="SE MODIFICO PERMISO CORRECTAMENTE";
         } catch (DataAccessException ex) {
            ex.printStackTrace();
            retorno ="ERROR AL MODIFICAR PERMISO";
        }
        return retorno;
    }

    public String nuevoPermiso(Map<String, String> parametros) {
        String retorno="";
         try {
          this.getSqlMapClientTemplate().insert(Cls_Parametros.funcionIbt_Rrhh_NUEVO_PERMISO,parametros);
           retorno="SE GUARDO PERMISO CORRECTAMENTE";
         } catch (DataAccessException ex) {
            ex.printStackTrace();
            retorno ="ERROR AL GUARDAR PERMISO";
        }
        return retorno;
    }

    public String actualizarEncargatura(Map<String, String> parametros) {
        String retorno = "";
        try {
            this.getSqlMapClientTemplate().update(Cls_Parametros.funcionIbt_Rrhh_ACTUALIZAR_ENCARGATURA, parametros);
            retorno = "ENCARGATURA LEVANTADA EXITOSAMENTE";
        } catch (Exception e) {
            e.printStackTrace();
            retorno = "ERROR AL LEVANTAR ENCARGATURA";
        }
        return retorno;
    }

    public Cls_Encargatura_Permiso obtenerEncargatura(Map<String, String> parametros) {
        Cls_Encargatura_Permiso retorno;
        try {
            retorno = (Cls_Encargatura_Permiso)(this.getSqlMapClientTemplate().queryForObject(
                    Cls_Parametros.funcionIbt_Rrhh_OBTENER_ENCARGATURA, parametros));
        } catch (Exception e) {
            e.printStackTrace();
            retorno = null;
        }
        return retorno;
    }

    public String eliminarPermiso(Map<String, String> parametros) {
        String retorno;
        try {
            this.getSqlMapClientTemplate().delete(Cls_Parametros.funcionIbt_Rrhh_ELIMINAR_PERMISO,
                    parametros);
            retorno = "PERMISO ELIMINADO EXITOSAMENTE";
        } catch(Exception e) {
            retorno = "ERROR AL ELIMINAR PERMISO";
        }
        return retorno;
    }
}
